package com.sudoctor.dao;

import java.util.List;

import com.sudoctor.bean.BusquedaAvanzadaBean;
import com.sudoctor.bean.BusquedaGeolocalizacionBean;
import com.sudoctor.bean.BusquedaSencillaBean;
import com.sudoctor.entity.HorarioInmueble;
import com.sudoctor.entity.Inmueble;
import com.sudoctor.entity.Telefono;

public interface InmuebleDAO<T> extends GenericDao<T>{
	
	/**
	 * Obtiene la lista de consultorios de una busqueda principal
	 * @param objBusquedaSencillaBean
	 * @return
	 */
	public List<Inmueble> obtenerListaConsultorios(BusquedaSencillaBean objBusquedaSencillaBean,int pagina, int resultadosPorPagina);
	
	/**
	 * Obtiene la lista de farmacias de una busqueda principal
	 * @param objBusquedaSencillaBean
	 * @return
	 */
	public List<Inmueble> obtenerListaFarmacias(BusquedaSencillaBean objBusquedaSencillaBean, int pagina, int resultadosPorPagina);
	
	/**
	 * Obtiene la lista de laboratorios de la busqueda principal
	 * @param objBusquedaSencillaBean
	 * @return
	 */
	public List<Inmueble> obtenerListaLaboratorios(BusquedaSencillaBean objBusquedaSencillaBean, int pagina, int resultadosPorPagina);
	
	/**
	 * Obtiene la lista de laboratorios de la busqueda principal
	 * @param objBusquedaSencillaBean
	 * @return
	 */
	public List<Inmueble> obtenerListaHospitalesClinicas(BusquedaSencillaBean objBusquedaSencillaBean,int pagina, int resultadosPorPagina);
	
	/**
	 * Obtiene el total de resgistros segun el criterio de busqueda sencilla
	 * @param objBusquedaSencillaBean
	 * @return
	 */
	public int obtenerTotalRegistros(BusquedaSencillaBean objBusquedaSencillaBean);
	
	
	/**
	 * Detalle del horario
	 * @return
	 */
	public List<HorarioInmueble> detalleHorario(int inmuebleTipoInmuebleId);
	
	/**
	 * Detalle inmueble
	 * @return
	 */
	public Inmueble detalleInmueble(int inmuebleId,  int tipoInmuebleId);
	
	/**
	 * Detalle telefonos
	 * @return
	 */
	public List<Telefono> detalleTelefonos(int inmuebleTipoInmuebleId);
	
	/**
	 * Obtiene lista de inmuebles en base a la latitud, longitud y otros parametros.
	 * @param objBusquedaGeolocalizacion
	 * @param offset
	 * @param resultadosPorPagina
	 * @return
	 */
	public  List<Inmueble> obtenerListaConsultoriosGeolocalizacion(BusquedaGeolocalizacionBean objBusquedaGeolocalizacion,final int offset, int resultadosPorPagina);
	
	
	public List<Inmueble> obtenerListaConsultorios(BusquedaAvanzadaBean objBusquedaAvanzadaBean);
	public List<Inmueble> obtenerListaFarmacias(BusquedaAvanzadaBean objBusquedaAvanzadaBean);
	public List<Inmueble> obtenerListaLaboratorios(BusquedaAvanzadaBean objBusquedaAvanzadaBean);
	public List<Inmueble> obtenerListaHospitalesClinicas(BusquedaAvanzadaBean objBusquedaAvanzadaBean);
	
	
	/**
	 * Obtiene el total de resgistros segun el criterio de busqueda de geolocalizacion
	 * @param objBusquedaSencillaBean
	 * @return
	 */
	public int obtenerTotalRegistros(BusquedaGeolocalizacionBean objBusquedaGeolocalizacionBean);

}
